package com.quantum.adapter
{

	/**
	 * An interface for an adaptable object.
	 * <p>
	 * Adaptable objects can be dynamically extended to provide different
	 * interfaces (or "adapters").  Adapters are created by adapter
	 * factories, which are in turn managed by type by adapter managers.
	 * </p>
	 * For example,
	 * <pre>
	 *     Adaptable a = [some adaptable];
	 *     IFoo x = (IFoo)a.getAdapter(IFoo.class);
	 *     if (x != null)
	 *         [do IFoo things with x]
	 * </pre>
	 * <p>
	 * This interface can be used without OSGi running.
	 * </p><p>
	 * Clients may implement this interface, or obtain a default implementation
	 * of this interface by subclassing <code>PlatformObject</code>.
	 * </p>
	 * @see AdapterFactory
	 * @see AdapterManager
	 */

	public interface Adaptable
	{
		function getAdapter(adapterType:Class):Object;
	}
}